package day12.Stream.File;

import java.io.File;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiConsumer;

public class Test5 {
    static Map<String, Integer> map = new HashMap<>();
    static int count = 0;//统计没有后缀名的文件
    /*
    需求：
        键盘录入一个文件夹路径，统计每种文件的个数并打印（考虑子文件夹）
     */

    public static void main(String[] args) {
        File dir = Test1.getDir();
        getCount(dir);
        map.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String s, Integer integer) {
                System.out.println(s+":"+integer+"个");
            }
        });

        System.out.println("没有后缀名的文件的个数"+count);

    }
    //统计
    private static void getCount(File dir){
        File[] files = dir.listFiles();
        for (File file : files) {
            //文件的话统计个数
            if (file.isFile()){
                String fileName = file.getName();
                //2、获取后缀,.再正则中是通配符所以转义
                if (fileName.contains(".")) {
                    String[] arr = fileName.split("\\.");
                    String type = arr[arr.length - 1];

                    //3、统计
                    if (!map.containsKey(type)){
                        map.put(type,1);

                    }else {
                        map.put(type,map.get(type)+1);
                    }
                }else {
                    //没有后缀名
                    count++;
                }

            }else {
                //文件夹的话，递归调用
                if (file.listFiles()!=null){
                    getCount(file);
                }
            }
        }


    }
}
